可能有些人已經發現了,我們少講到組合模式(Composite Pattern)、享元模式(Flyweight Pattern)。
先來談談組合模式,個人覺得組合模式並不是一個解決問題的方法,更像是一種解決問題的前置步驟。
不知有沒有人曾經學過資料結構呢?
其實說白了組合模式就是一種樹狀結構(Tree),而樹狀結構要解決的問題很多都是資料相關的問題,
即便化成了物件,現在也很多套件(或是內建)都有幫處理這些資料搜尋甚至新增、修改的方法。
所以就不再特別贅述。
那我們再來看看享元模式,享元模式的功能是要減少物件(Object)的創建,提高物件的複用。
而享元模式主要是透過工廠模式來創建物件,而HashMap
儲存建立過的物件。
再透過工廠幫忙判斷是否在HashMap
中建立過,再決定是否創建。
所以嚴格說起來,享元模式比較像是工廠模式的一種延伸應用。
講完了結構型設計模式,
可以歸納出這類的設計模式主要處理的是,將系統分析訂定出來的架構轉變成程式結構的一種方式。
前面幾篇文章也有提到過,結構型設計模式主要是處理執行(RunTime)以前的問題。
說到這個就不得不提到**軟體設計架構(architectural pattern) ** 這個觀念了。
軟體設計架構就是一種表述系統需求分工的方式。
而在軟體設計架構中最耳熟能詳的應該就屬MVC架構了(這邊就以此為代表不列舉其他的架構)。
這架構簡單、好學、好理解(所以傳度也高),但他就好像沒有文字的語言。
也許一開始大家都用得非常好,但是因為沒有明確定義實際的操作方法導致漸漸失傳。
甚至開始了各種門派(MVP、MVVM、VIPER...等),到了最後就像是學習方言一樣,
只能不斷的透過口傳來學習掌握這套技能。
軟體設計架構就像是骨架奠定了系統的雛型,設計模式就像是肉體讓系統有一個完整的實體,
最後撰寫出來的程式就是驅動我們整套系統的神經。
在我們學習的過程中(職涯過程),應該要
從程式撰寫開始、接著系統設計(設計模式),
一直到系統架構(軟體設計架構)。
而最後在實際開發運用時會從 系統架構 -> 系統設計 -> 程式撰寫 這樣的步驟來完成整個專案。